home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45c / memory.lst < prev    next >
File List  |  1995-01-15  |  33KB  |  782 lines

  1. [This file was originally provided by Robin Walker.  --Ralf]
  2. Last Update: 1/15/95
  3.  
  4. Format of BIOS Data Segment at segment 40h:
  5.         {items in curly braces not documented by IBM}
  6. Offset    Size    Description
  7.  00h    WORD    Base I/O address of 1st serial I/O port, zero if none
  8.  02h    WORD    Base I/O address of 2nd serial I/O port, zero if none
  9.  04h    WORD    Base I/O address of 3rd serial I/O port, zero if none
  10.  06h    WORD    Base I/O address of 4th serial I/O port, zero if none
  11.            Note: Above fields filled in turn by POST as it finds serial
  12.             ports. POST never leaves gaps. DOS and BIOS serial device
  13.             numbers may be redefined by re-assigning these fields.
  14.  08h    WORD    Base I/O address of 1st parallel I/O port, zero if none
  15.  0Ah    WORD    Base I/O address of 2nd parallel I/O port, zero if none
  16.  0Ch    WORD    Base I/O address of 3rd parallel I/O port, zero if none
  17.  0Eh    WORD    [non-PS] Base I/O address of 4th parallel port, zero if none
  18.         [PS] {Segment of Extended BIOS Data Segment}
  19.             Note: Above fields filled in turn by POST as it finds
  20.             parallel ports. POST never leaves gaps. DOS and BIOS
  21.             parallel device numbers may de redefined by re-assigning
  22.             these fields.
  23.  10h    WORD    Installed hardware:
  24.             bits 15-14: number of parallel devices
  25.             bit        13: [Conv, PS/2-55LS] Internal modem
  26.             bit        12: reserved
  27.             bits 11- 9: number of serial devices
  28.             bit         8: reserved
  29.             bits  7- 6: number of diskette drives minus one
  30.             bits  5- 4: Initial video mode:
  31.                     00b = EGA,VGA,PGA
  32.                     01b = 40 x 25 color
  33.                     10b = 80 x 25 color
  34.                     11b = 80 x 25 mono
  35.             bit         3: reserved
  36.             bit         2: [PS] =1 if pointing device
  37.                 [non-PS] reserved
  38.             bit         1: =1 if math co-processor
  39.             bit         0: =1 if diskette available for boot
  40.  12h    BYTE    [Conv] POST status
  41.         [AT] {Manufacturing test initialisation flags}
  42.             bit 0: Manufacturing test mode rather than normal operation
  43.             bits 1-7 unused
  44.         [MCA] Manufacturing test
  45.             bit 7: POST flag, ???
  46.             bits 6-5 unused
  47.             bit 4: POST flag, slot 4 has adapter identifier EDAFh
  48.             bit 3: POST flag, 80x25 color video
  49.             bit 2: POST flag, ???
  50.             bit 1: unused
  51.             bit 0: manufacturing test mode rather than normal operation
  52.         [PS/2-25] POST system flag
  53.             bit 0: optional memory failed; memory remapped
  54.             bit 1: real-time clock installed
  55.  13h    WORD    Base memory size in KBytes (0-640)
  56.  15h    WORD    [PC,XT] adapater memory size in KBytes
  57.  15h    BYTE    [AT] {Manufacturing test scratch pad}
  58.         [Compaq Deskpro 386] previous scan code
  59.  16h    BYTE    [AT] {Manufacturing test scratch pad}
  60.         [PS/2 Mod 30] {BIOS control flags}
  61.         [Compaq Deskpro 386] keyclick loudness (00h-7Fh)
  62.  17h    BYTE    Keyboard status flags 1:
  63.             bit 7 =1 INSert active
  64.             bit 6 =1 Caps Lock active
  65.             bit 5 =1 Num Lock active
  66.             bit 4 =1 Scroll Lock active
  67.             bit 3 =1 either Alt pressed
  68.             bit 2 =1 either Ctrl pressed
  69.             bit 1 =1 Left Shift pressed
  70.             bit 0 =1 Right Shift pressed
  71.  18h    BYTE    Keyboard status flags 2:
  72.             bit 7 =1 INSert pressed
  73.             bit 6 =1 Caps Lock pressed
  74.             bit 5 =1 Num Lock pressed
  75.             bit 4 =1 Scroll Lock pressed
  76.             bit 3 =1 Pause state active
  77.             bit 2 =1 Sys Req pressed
  78.             bit 1 =1 Left Alt pressed
  79.             bit 0 =1 Left Ctrl pressed
  80.  19h    BYTE    Keyboard: Alt-nnn keypad workspace
  81.  1Ah    WORD    Keyboard: pointer to next character in keyboard buffer
  82.  1Ch    WORD    Keyboard: pointer to first free slot in keyboard buffer
  83.  1Eh 16 WORDs    Keyboard circular buffer (but see 80h, 82h for override)
  84.  3Eh    BYTE    Diskette recalibrate status:
  85.             bit 7 =1 Diskette hardware interrupt occurred
  86.             bits 6-4 reserved
  87.             bit 3 =1 Recalibrate diskette 3 (PC,XT only)
  88.             bit 2 =1 Recalibrate diskette 2 (PC,XT only)
  89.             bit 1 =1 Recalibrate diskette 1
  90.             bit 0 =1 Recalibrate diskette 0
  91.  3Fh    BYTE    Diskette motor status:
  92.             bit 7 =1 current operation is write or format
  93.               =0 current operation is read or verify
  94.             bit 6    reserved
  95.                 (DMA enabled on 82077)
  96.             bits 5-4 diskette drive number selected (0-3)
  97.             bit 3 =1 diskette 3 motor on (PC,XT only)
  98.             bit 2 =1 diskette 2 motor on (PC,XT only)
  99.             bit 1 =1 diskette 1 motor on
  100.             bit 0 =1 diskette 0 motor on
  101.  40h    BYTE    Diskette motor turn-off time-out count
  102.  41h    BYTE    Diskette last operation status (0 = OK)
  103.             bit 7 =1 drive not ready
  104.             bit 6 =1 seek error
  105.             bit 5 =1 general controller failure
  106.             bits 4-0:
  107.                 00h no error
  108.                 01h invalid request/parameter
  109.                 02h address mark not found
  110.                 03h write-protect error
  111.                 04h sector not found
  112.                 06h diskette change line active
  113.                 08h DMA overrun
  114.                 09h DMA across 64k boundary
  115.                 0Ch media type unknown
  116.                 10h CRC error on read
  117.             Note: the following values for this byte differ somewhat
  118.             from the bitfield definition above:
  119.                 30h drive does not support media sense
  120.                 31h no media in drive
  121.                 32h drive does not support media type
  122.                 AAh diskette drive not ready
  123.  42h  7 BYTEs    Diskette/Fixed disk status/command bytes
  124.     42h BYTE    XT: command byte to hard disk controller
  125.         AT: write precompensation cylinder number / 4
  126.     43h    BYTE    XT: bit 5 = drive number, bits 3-0=head number
  127.         AT: sector count
  128.     44h BYTE    XT: bits 6,7 = high bits of track, bits 5-0 = start sector-1
  129.         AT: starting sector
  130.     45h BYTE    low byte of track number
  131.     46h BYTE    XT: sector count
  132.         AT: high bits of track number
  133.     47h BYTE    XT: controlbyte from HD parameters (step rate,...)
  134.         AT: 101DHHHH, D=drive number, HHHH=head number
  135.     48h BYTE    XT: INT 13h subfunction number
  136.         AT: comand byte to hard disk controller
  137.  42h    BYTE    disk controller status register 0
  138.         bits 7-6: interrupt code
  139.             00 normal completion
  140.             01 abnormal termination during execution
  141.             10 invalid command
  142.             11 abnormal termination: ready line on/diskette change
  143.         bit 5: requested seek complete
  144.         bit 4: drive fault
  145.         bit 3: drive not ready
  146.         bit 2: head state at time of interrupt
  147.         bits 1-0: selected drive (drives 2&3 on PC,XT only)
  148.  43h    BYTE    diskette controller status register 1
  149.         bit 7: attempted access beyon last cylinder
  150.         bit 6: unused
  151.         bit 5: CRC error on read
  152.         bit 4: DMA overrun
  153.         bit 3: unused
  154.         bit 2: data error
  155.         bit 1: disk write protected
  156.         bit 0: missing address mark
  157.  44h    BYTE    diskette controller status register 2
  158.         bit 7: unused
  159.         bit 6: found deleted data address mark
  160.         bit 5: CRC error in data field
  161.         bit 4: wrong cylinder number read
  162.         bit 3: verify equal
  163.         bit 2: can't find sector matching verify condition
  164.         bit 1: bad cylinder
  165.         bit 0: unable to find address mark
  166.  49h    BYTE    Video current mode
  167.  4Ah    WORD    Video columns on screen
  168.  4Ch    WORD    Video page (regen buffer) size in bytes
  169.  4Eh    WORD    Video current page start address in regen buffer
  170.  50h 16 BYTEs    Video cursor position (col, row) for eight pages, 0 based
  171.  60h    WORD    Video cursor type, 6845 compatible, hi=startline, lo=endline
  172.  62h    BYTE    Video current page number
  173.  63h    WORD    Video CRT controller base address: color=03D4h, mono=03B4h
  174.  65h    BYTE    Video current setting of mode select register 03D8h/03B8h
  175.         bits 7-6 unused
  176.         bit 5: attribute bit 7 controls blinking instead of background
  177.         bit 4: mode 6 graphics in monochrome
  178.         bit 3: video signal enabled
  179.         bit 2: monochrome
  180.         bit 1: graphics
  181.         bit 0: 80x25 text
  182.  66h    BYTE    Video current setting of CGA palette register 03D9h
  183.         bits 7-6 unused
  184.         bit 5: palette (0/1)
  185.         bit 4: intense background colors in text mode
  186.         bit 3: intense border color (40x25) / background color (mode 5)
  187.         bit 2: red
  188.         bit 1: green
  189.         bit 0: blue
  190.  67h    WORD    [PC only] cassette time count
  191.  67h    DWORD    {POST real mode re-entry point after certain resets}
  192.         [PS except Mod 25,30] pointer to reset code upon system reset
  193.             with memory preserved (see offset 72h)
  194.  69h    WORD    [PC only] cassette CRC register
  195.         [V20-XT-BIOS] key repeat
  196.         bit 7: key repeat disabled
  197.         bit 6: Ctrl-Alt pressed instead of just Alt
  198.  6Bh    BYTE    [PC only] last value read from cassette
  199.         [XT+] POST last unexpected interrupt
  200.         bit 0 = IRQ0 to bit 7 = IRQ7
  201.  6Ch    DWORD    Timer ticks since midnight
  202.  70h    BYTE    Timer overflow, non-zero if has counted past midnight
  203.  71h    BYTE    Ctrl-Break flag: bit 7=1
  204.  72h    WORD    POST reset flag:
  205.             1234h to bypass memory test (warm boot)
  206.             4321h [PS/2 except Mod 25,30] to preserve memory
  207.             5678h [Conv] system suspended
  208.             9ABCh [Conv] manufacturing test mode
  209.             ABCDh [Conv] POST loop mode
  210.             0064h Burn-in mode
  211.  74h    BYTE    Fixed disk last operation status, except ESDI drives:
  212.             00h no error
  213.             01h invalid function request
  214.             02h address mark not found
  215.             03h write protect error
  216.             04h sector not found
  217.             05h reset failed
  218.             06h diskette removed
  219.             07h drive parameter activity failed
  220.             08h DMA overrun
  221.             09h DMA data boundary error
  222.             0Ah bad sector flag detected
  223.             0Bh bad track detected
  224.             0Ch requested diskette media type not found
  225.             (PS/2 or extended BIOS only)
  226.             unsupported track
  227.             0Dh invalid number of sectors for Format
  228.             0Eh control data address mark detected
  229.             0Fh DMA arbitration level out of range
  230.             10h uncorrectable ECC or CRC error
  231.             11h ECC corrected data error
  232.             20h general controller failed
  233.             40h seek failed
  234.             80h time out
  235.             AAh drive not ready
  236.             BBh undefined error
  237.             CCh write fault on selected drive
  238.             E0h status error/error register is zero
  239.             FFh sense failed
  240.  74h    BYTE    [WD1002-27X SuperBIOS] total drives, first controller only
  241.  75h    BYTE    Fixed disk: number of fixed disk drives
  242.         [WD1002-27X SuperBIOS] total fixed drives, both controllers
  243.  76h    BYTE    Fixed disk: control byte    {IBM document only for XT}
  244.         XT: hard disk controller's I/O address (Western Digital)
  245.         [WD1002-27X SuperBIOS] used in track recalculation
  246.  77h    BYTE    Fixed disk: I/O port offset {IBM document only for XT}
  247.         [WD1002-27X SuperBIOS] used in track recalculation
  248.  78h  3 BYTEs    Parallel devices 1-3 time-out counters
  249.  7Bh    BYTE    parallel device 4 time-out counter [non-PS and PS Mod 25,30]
  250.         bit 7-6 reserved
  251.         bit 5 set if Virtual DMA Spec supported [PS] (see INT 4B)
  252.         bit 4 reserved
  253.         bit 3 set if INT 4Bh intercepted and must be chained
  254.         bit 2 reserved
  255.         bit 1 set if Generic SCSI CBIOS services available on INT 4Bh
  256.         bit 0 reserved
  257.  7Ch  4 BYTEs    Serial devices 1-4 time-out counters
  258.  80h    WORD    Keyboard buffer start as offset from segment 40h (normally 1Eh)
  259.  82h    WORD    Keyboard buffer end+1 as offset from segment 40h (normally 3Eh)
  260.         [XT BIOS dated 11/08/82 ends here]
  261.  84h    BYTE    Video EGA/MCGA/VGA rows on screen minus one
  262.  85h    WORD    Video EGA/MCGA/VGA character height in scan-lines
  263.  87h    BYTE    Video EGA/VGA control: [MCGA: =00h]
  264.         bit 7:    =1 if not to clear RAM (see INT 10h, AH=00h)
  265.         bits 6-5: RAM on adapter = (this field + 1) * 64K
  266.         bit 4:    reserved
  267.         bit 3:    =0 if EGA/VGA video system active, =1 if inactive
  268.         bit 2:    =1 if to wait for display enable (what means this?)
  269.         bit 1:    =0 for color or ECD monitor, =1 for mono monitor
  270.         bit 0:    =0 alphanumeric cursor emulation enabled, =1 not.
  271.             When enabled, text mode cursor size (INT 10,AH=01h)
  272.             settings looking like CGA ones are translated to
  273.             equivalent EGA/VGA ones.
  274.  88h    BYTE    Video EGA/VGA switches: [MCGA: reserved]
  275.             bits 7-4: power-on state of feature connector bits 3-0
  276.             bits 3-0: configuration switches 4-1 (=0 on, =1 off)
  277.               Values as read:
  278.             0h Pri MDA,        Sec EGA+old color display 40 x 25
  279.             1h Pri MDA,        Sec EGA+old color display 80 x 25
  280.             2h Pri MDA,        Sec EGA+ECD normal mode (CGA emul)
  281.             3h Pri MDA,        Sec EGA+ECD enhanced mode
  282.             4h Pri CGA 40 x 25, Sec EGA mono display
  283.             5h Pri CGA 80 x 25, Sec EGA mono display
  284.             6h Pri EGA+old color display 40 x 25,  Sec MDA
  285.             7h Pri EGA+old color display 80 x 25,  Sec MDA
  286.             8h Pri EGA+ECD normal mode (CGA emul), Sec MDA
  287.             9h Pri EGA+ECD enhanced mode,           Sec MDA
  288.             Ah Pri EGA mono display,           Sec CGA 40 x 25
  289.             Bh Pri EGA mono display,           Sec CGA 80 x 25
  290.             When bit4 of 40h:89h is 0, VGA emulates 350-line EGA if
  291.             this byte is x3h or x9h, otherwise emulates 200-line CGA in
  292.             400-line double scan. VGA resets this byte to x9h after the
  293.             mode set.
  294.             See also note for next byte.
  295.  89h    BYTE    {Video MCGA/VGA mode-set option control:}
  296.             bits 7 and 4:
  297.             0 0  350-line mode requested
  298.             0 1  400-line mode at next mode set
  299.             1 0  200-line mode requested
  300.             1 1  reserved
  301.             Apparently VGA BIOS mode set disregards bit 7 and uses
  302.             byte 40h:88h to determine 200/350 selection when bit 4
  303.             is zero. Presumably bit 7 is a convenience for other
  304.             purposes. Bit 7 is reset to zero after the mode set.
  305.             bit 6:  =1 if display switching enabled, =0 if disabled
  306.             bit 5:  reserved
  307.             bit 4:  [VGA]  =1 if to use 400-line mode at next mode set
  308.                    =0 if to emulate EGA at next mode set
  309.                       This bit set to 1 after the mode set.
  310.                 [MCGA] =1 use 400-line mode at next mode set
  311.                    =0 emulate CGA, digital monitor, 200 lines,
  312.                       8 x 8 text font at next mode set
  313.                       Bit unchanged by mode set.
  314.             bit 3:  =0 if default palette loading enabled at mode set
  315.             bit 2:  =1 if mono display, =0 if color display
  316.             bit 1:  =1 if gray scale summing enabled, =0 if disabled
  317.             bit 0:  [VGA] =1 if VGA active, =0 if not
  318.                 [MCGA] reserved, zero
  319.         Note: the Tseng ET4000 BIOS v3.00 uses bits 6-4 of 88h and
  320.             bits 6-5 of 89h to specify graphics-mode refresh
  321.             rates as follows
  322.                 88h/6        640x480:  1 for 72Hz,0 for 60Hz
  323.                 88h/5+89h/6    800x600:  00  60Hz
  324.                               01  56Hz
  325.                               11  72Hz
  326.                 88h/4+89h/5    1024x768: 00  interlaced
  327.                               01  60Hz
  328.                               10  72Hz???
  329.                               11  70Hz
  330.  8Ah    BYTE    {Video [MCGA/VGA]: index into Display Combination Code table}
  331.  8Bh 11 BYTEs    reserved [PC, PCjr, PC/XT 11/8/82, and Convertible]
  332.  8Bh    BYTE    Diskette media control [not XT]:
  333.             bits 7-6: Last data rate set by controller:
  334.                   00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
  335.             bits 5-4: Last diskette drive step rate selected
  336.                   00=0Ch, 01=0Dh, 10=0Eh, 11=0Ah
  337.             bits 3-2: {Data rate at start of operation}
  338.             bits 1-0: reserved
  339.          Note: EHD BIOS sets this byte to 01h and never reads it back
  340.  8Ch    BYTE    Fixed disk controller status [not XT]
  341.  8Dh    BYTE    Fixed disk controller Error Status [not XT]
  342.  8Eh    BYTE    Fixed disk Interrupt Control [not XT]
  343.         cleared to 00h at start of disk operation, set to FFh by IRQ14
  344.         handler when hard disk controller completes command
  345.  8Fh    BYTE    {Diskette controller information [not XT]:}
  346.             bit 7:  reserved
  347.             bit 6:  =1 drive 1 determined
  348.             bit 5:  =1 drive 1 is multi-rate, valid if drive determined
  349.             bit 4:  =1 drive 1 supports 80 tracks, always valid
  350.             bit 3:  reserved
  351.             bit 2:  =1 drive 0 determined
  352.             bit 1:  =1 drive 0 is multi-rate, valid if drive determined
  353.             bit 0:  =1 drive 0 supports 80 tracks, always valid
  354.          Note: EHD BIOS sets this byte to 01h and never alters it again
  355.  90h    BYTE    Diskette drive 0 media state
  356.  91h    BYTE    Diskette drive 1 media state
  357.         bits 7-6: Data rate
  358.                 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
  359.         bit    5: =1 if double stepping required (e.g. 360kB in 1.2MB)
  360.         bit    4: =1 if media established
  361.         bit    3: =1 if drive capable of supporting 4MB media
  362.         bits 2-0: on exit from BIOS, contain:
  363.             000 trying 360kB in 360kB
  364.             001 trying 360kB in 1.2MB
  365.             010 trying 1.2MB in 1.2MB
  366.             011 360kB in 360kB established
  367.             100 360kB in 1.2MB established
  368.             101 1.2MB in 1.2MB established
  369.             110 reserved
  370.             111 all other formats/drives
  371.  92h    BYTE    {Diskette drive 0 media state at start of operation}
  372.         officially "Drive 2 media state"
  373.         bits 7-3 as above
  374.         bit 2: =1 if multiple data rate capability determined
  375.         bit 1: =1 if multiple data rate capability
  376.         bit 0: =1 if drive has 80 tracks, =0 if 40 tracks
  377.  92h    BYTE    [Olivetti Quaderno] Hard Disk powerdown countdown in clock
  378.         ticks (HD turned off when counter reaches zero)
  379.  93h    BYTE    {Diskette drive 1 media state at start of operation}
  380.         officially "Drive 3 media state"
  381.         bits 7-3 as above
  382.         bit 2: =1 if multiple data rate capability determined
  383.         bit 1: =1 if multiple data rate capability
  384.         bit 0: =1 if drive has 80 tracks, =0 if 40 tracks
  385.         [HP 100LX/200LX] display control status
  386.         bit 0 =1 if DISPCTL -K
  387.         bit 1 =1 if DISPCTL -C
  388.  94h    BYTE    Diskette drive 0 current track number
  389.  95h    BYTE    Diskette drive 1 current track number
  390.  96h    BYTE    Keyboard status byte 1
  391.         bit 7 =1 read-ID in progress
  392.         bit 6 =1 last code read was first of two ID codes
  393.         bit 5 =1 force Num Lock if read-ID and enhanced keyboard
  394.         bit 4 =1 enhanced keyboard installed
  395.         bit 3 =1 Right Alt pressed
  396.         bit 2 =1 Right Ctrl pressed
  397.         bit 1 =1 last code read was E0h
  398.         bit 0 =1 last code read was E1h
  399.  97h    BYTE    Keyboard status byte 2
  400.         bit 7 =1 keyboard transmit error flag
  401.         bit 6 =1 LED update in progress
  402.         bit 5 =1 RESEND received from keyboard
  403.         bit 4 =1 ACK received from keyboard
  404.         bit 3 reserved, must be zero
  405.         bit 2 Caps Lock LED
  406.         bit 1 Num Lock LED
  407.         bit 0 Scroll Lock LED
  408.  98h    DWORD    Timer2: [AT, PS exc Mod 30] ptr to user wait-complete flag
  409.                         (see INT 15, AX=8300h)
  410.  9Ch    DWORD    Timer2: [AT, PS exc Mod 30] user wait count in microseconds
  411.  9Fh    BYTE    [HP 100LX/200LX] video zoom mode
  412.         02h 80x25 mono
  413.         03h 80x25 color
  414.         80h 64x18 mono
  415.         81h 64x18 color
  416.         82h 40x25 mono
  417.         83h 40x25 color
  418.         84h 40x16 mono
  419.         85h 40x16 color
  420.         (see INT 10/AH=D0h)
  421.  A0h    BYTE    Timer2: [AT, PS exc Mod 30] Wait active flag:
  422.             bit 7 =1 wait time elapsed
  423.             bits 6-1 reserved
  424.             bit 0 =1 INT 15h, AH=86h has occurred
  425.  A1h    BYTE    bit 5 set if LAN Support Program Interrupt Arbitrator present
  426.         (DEVICE=DXMA0MOD.SYS)
  427.  A2h  6 BYTEs    reserved for network adapters
  428.  A4h    DWORD    [PS/2 Mod 30] Saved Fixed Disk Interrupt Vector
  429.  A8h    DWORD    Video: EGA/MCGA/VGA ptr to Video Save Pointer Table (see below)
  430.  ACh-AFh    reserved
  431.  B0h    BYTE    (Phoenix 386 BIOS 1.10 10a) loop count for hard disk timeout
  432.           and delaying when beeping due to full keyboard buffer
  433.  B0h    DWORD    ptr to 3363 Optical disk driver or BIOS entry point.
  434.             When 3363 BIOS present, the signature "OPTIC ",00h occurs 3
  435.             bytes beyond this entry point.
  436.             When 3363 BIOS and 3363 File System Driver present, the
  437.             signature "FILE SYSTEM DRIVER",00h occurs 3 bytes beyond
  438.             this entry point.
  439.  B0h 16 BYTEs    (1988 Phoenix 386 BIOS 1.10 03) drive parameters for hard disk
  440.         type 48 (see INT 41,INT 46)
  441.  B4h    WORD    reserved
  442.  B5h    BYTE    (Dell 4xxDE)
  443.         bit 2: ??? (related to disk drives)
  444.         bit 5: page tables set to allow Weitek addressing in real mode
  445.         bit 6: Weitek math coprocessor present
  446.  B6h  3 BYTEs    reserved for POST?
  447.  B9h  7 BYTEs    ???
  448.  C0h 16 BYTEs    (1988 Phoenix 386 BIOS 1.10 03) drive parameters for hard disk
  449.         type 49 (see INT 41,INT 46)
  450.  C0h 14 BYTEs    reserved
  451.  CEh    WORD    count of days since last boot
  452.  D0h-EFh    reserved
  453.  D0h    BYTE    [Digiboard MV/4] length of data table
  454.  D0h    BYTE    [EHD floppy]
  455.              bit 4: installation completed
  456.              bits 3-0: drives 0-3
  457.  D1h    BYTE    [Digiboard MV/4] product ID
  458.  D2h    WORD    [Digiboard MV/4] base address found
  459.  D4h    BYTE    [Digiboard MV/4] ports
  460.  D5h    BYTE    [Digiboard MV/4] IRQ
  461.  D5h    BYTE    [EHD floppy] total number of floppy disk controllers in system
  462.  D6h    BYTE    [EHD floppy] AND-bits for DL to adjust port address (FFh if
  463.           at 03Fxh and 7Fh if at 037xh)
  464.  D6h    WORD    [Digiboard MV/4] keyboards found
  465.  D7h    BYTE    [EHD floppy] drive 0 diskette media status
  466.             bits 7-6: Data rate: 00=500kbps,01=300kbps,10=250k,11=1M/S
  467.             bit    5: =1 if double stepping reqd (e.g. 360kB in 1.2MB)
  468.             bit    4: =1 if media established
  469.             bit    3: reserved
  470.             bits 2-0: on exit from BIOS, contain:
  471.                 000 trying 360kB in 360kB
  472.                 001 trying 360kB in 1.2MB
  473.                 010 trying 1.2MB in 1.2MB
  474.                 011 360kB in 360kB established
  475.                 100 360kB in 1.2MB established
  476.                 101 1.2MB in 1.2MB established
  477.                 110 reserved (2M8?)
  478.                 111 all other formats/drives
  479.         the value in 4D7 gets sent to 490 (diskette0 media state)
  480.  D8h    BYTE    [EHD floppy] drive 1 diskette media state
  481.  D8h    WORD    [Digiboard MV/4] mice found
  482.  D9h    BYTE    [EHD floppy] drive 2 diskette media state
  483.  DAh    BYTE    [Digiboard MV/4] current port (used by VGA initialization only)
  484.  DAh    BYTE    [EHD floppy] drive 3 diskette media state
  485.  DBh    BYTE    [Digiboard MV/4] master 8259 mask (used by VGA init only)
  486.  DBh    BYTE    [EHD floppy] drive 0 needs recalibaration
  487.  DCh    BYTE    [Digiboard MV/4] slave 8259 mask (used by VGA init only)
  488.  DCh    BYTE    [EHD floppy] drive 1 needs recalibaration
  489.  DDh    BYTE    [EHD floppy] drive 2 needs recalibaration
  490.  DEh    BYTE    [EHD floppy] drive 3 needs recalibaration
  491.  E0h-EFh    [Phoenix 386 BIOS] drive parameter table for first hard disk
  492.           if configurable "type 47"
  493.  E3h    BYTE    [EHD floppy] drive 0 diskette type (from jumpers)
  494.             01h undefined by diskette change (360K)
  495.             02h 1.2M
  496.             03h 720K
  497.             04h 1.44M
  498.             05h 2.88M
  499.  E4h    BYTE    [EHD floppy] drive 1 diskette type (from jumpers)
  500.  E5h    BYTE    [EHD floppy] drive 2 diskette type (from jumpers)
  501.  E6h    BYTE    [EHD floppy] drive 3 diskette type (from jumpers)
  502.  EAh    WORD    [Omti controller] segment of extended BIOS data area???
  503.         drive parameter tables stored in specified segment
  504.  ECh    WORD    (Dell 4xxDE BIOS A11) loop count for delays
  505.  F0h-FFh    reserved for user
  506. 100h    BYTE    Print Screen Status byte
  507. 104h    BYTE    [MS-DOS] logical drive for single-floppy system (A: or B:)
  508. 10Eh    BYTE    state of BREAK at start of BASICA.COM execution
  509. 10Fh    BYTE    flag: 02h if BASICA v2.10 running
  510. 116h    DWORD    INT 1Bh at start of BASICA.COM execution
  511. 11Ah    DWORD    INT 24h at start of BASICA.COM execution
  512.  
  513. Format of Interrupt Vector Table data storage (from 0000h:0000h):
  514. Offset    Size    Description
  515.  31Dh 16 BYTEs    user-definable hard disk parameters for drive type 47
  516.         (1989 AMI 386sx BIOS) (see INT 41,INT 46)
  517.  32Dh 16 BYTEs    user-definable hard disk parameters for drive type 48
  518.         (1989 AMI 386sx BIOS) (see INT 41,INT 46)
  519. Note:    these fields are used is the AMI BIOS setup is set to use the top of
  520.       the interrupt table for the extended BIOS data area
  521.  
  522. Format of Extended BIOS Data Area (see 40:0Eh for ptr) [PS only]
  523. Offset    Size    Description
  524.  00h    BYTE    Length of EBDA in kilobytes
  525.  01h 15 BYTEs    reserved
  526.  17h    BYTE    Number of entries in POST error log (0-5)
  527.  18h  5 WORDs    POST error log (each word is a POST error number)
  528.  22h    DWORD    Pointing Device Driver entry point
  529.  26h    BYTE    Pointing Device Flags 1
  530.            bit 7:    command in progress
  531.            bit 6:    resend byte (FAh) received
  532.            bit 5:    acknowledge byte (FEh) received
  533.            bit 4:    error byte (FCh) received
  534.            bit 3:    unexpected value received
  535.            bits 2-0: index count for auxiliary device data at 28h
  536.  27h    BYTE    Pointing Device Flags 2
  537.            bit 7:    device driver far call flag
  538.            bits 6-3: reserved
  539.            bits 2-0: package size (number of bytes received) - 1
  540.  28h  8 BYTEs    Pointing Device Auxiliary Device Data
  541.  30h    DWORD    Vector for INT 07h stored here during 80387 interrupt
  542.  34h    DWORD    Vector for INT 01h stored here during INT 07h emulation
  543.  38h    BYTE    Scratchpad for 80287/80387 interrupt code
  544.  39h    WORD    Timer3: Watchdog timer initial count
  545.  3Bh    BYTE    ??? seen non-zero on Model 30
  546.  3Ch    BYTE    ???
  547.  3Dh 16 BYTEs    Fixed Disk parameter table for drive 0 (for older machines
  548.           which don't directly support the installed drive)
  549.  4Dh 16 BYTEs    Fixed Disk parameter table for drive 1 (for older machines
  550.           which don't directly support the installed drive)
  551.  5Dh-67h    ???
  552.  68h    BYTE    cache control
  553.         bits 7-2 unused (0)
  554.         bit 1: CPU cache failed test
  555.         bit 0: CPU cache disabled
  556.  69h-6Bh    ???
  557.  6Ch    BYTE    Fixed disk: (=FFh on ESDI systems)
  558.             bits 7-4: Channel number 00-0Fh
  559.             bits 3-0: DMA arbitration level 00-0Eh
  560.  6Dh    BYTE    ???
  561.  6Eh    WORD    current typematic setting (see INT 16/AH=03h)
  562.  70h    BYTE    number of attached hard drives
  563.  71h    BYTE    hard disk 16-bit DMA channel
  564.  72h    BYTE    interrupt status for hard disk controller (1Fh on timeout)
  565.  73h    BYTE    hard disk operation flags
  566.         bit 7: controller issued operation-complete INT 76h
  567.         bit 6: controller has been reset
  568.         bits 5-0: unused (0)
  569.  74h    DWORD    old INT 76h vector
  570.  78h    BYTE    hard disk DMA type
  571.         typically 44h for reads and 4Ch for writes
  572.  79h    BYTE    status of last hard disk operation
  573.  7Ah    BYTE    hard disk timeout counter
  574.  7Bh-7Dh
  575.  7Eh  8 WORDs    storage for hard disk controller status
  576.  8Eh-E6h
  577.  E7h    BYTE    floppy drive type
  578.         bit 7: drive(s) present
  579.         bits 6-2: unused (0)
  580.         bit 1: drive 1 is 5.25" instead of 3.5"
  581.         bit 0: drive 0 is 5.25"
  582.  E8h-EBh
  583.  ECh    BYTE    hard disk parameters flag
  584.         bit 7: parameters loaded into EBDA
  585.         bits 6-0: unused (0)
  586.  EDh    BYTE    ???
  587.  EEh    BYTE    CPU family ID (03h = 386, 04h = 486, etc.) (see INT 15/AH=C9h)
  588.  EFh    BYTE    CPU stepping (see INT 15/AH=C9h)
  589.  F0h 39 BYTEs  ???
  590. 117h    WORD    keyboard ID (see INT 16/AH=0Ah)
  591.         (most commonly 41ABh)
  592. 119h    BYTE    ???
  593. 11Ah    BYTE    non-BIOS INT 18h flag
  594.         bits 7-1: unused (0)
  595.         bit 0: set by BIOS before calling user INT 18h at offset 11Dh
  596. 11Bh  2 BYTE    ???
  597. 11Dh    DWORD    user INT 18h vector if BIOS has re-hooked INT 18h
  598. 121h and up:    ??? seen non-zero on Model 60
  599. 3F0h    BYTE    Fixed disk buffer (???!!!)
  600.  
  601. Format of Video Save Pointer Table [EGA/VGA/MCGA only]:
  602. Offset    Size    Description
  603.  00h    DWORD    ptr to Video Parameter Table
  604.  04h    DWORD    ptr to Parameter Dynamic Save Area, else 0 [EGA/VGA only]
  605.  08h    DWORD    ptr to Alphanumeric Character Set Override, else 0
  606.  0Ch    DWORD    ptr to Graphics Character Set Override, else 0
  607.  10h    DWORD    [VGA only] ptr to Secondary Save Pointer Table, must be valid
  608.  14h    DWORD    reserved, zero
  609.  18h    DWORD    reserved, zero
  610. Note: table initially in ROM, copy to RAM to alter, then update 40h:A8h.
  611.  
  612. Format of Secondary Video Save Pointer Table [VGA only]:
  613. Offset    Size    Description
  614.  00h    WORD    Length of this table in bytes, including this word (1Ah)
  615.  02h    DWORD    ptr to Display Combination Code Table, must be valid
  616.  06h    DWORD    ptr to second Alphanumeric Character Set Override, else 0
  617.  0Ah    DWORD    ptr to User Palette Profile Table, else 0
  618.  0Eh    DWORD    reserved, zero
  619.  12h    DWORD    reserved, zero
  620.  16h    DWORD    reserved, zero
  621. Note: table initially in ROM, copy to RAM to alter, then alter Save Ptr Table.
  622.  
  623. Format of Video Parameter Table [EGA, VGA only]:
  624. An array of 23 [EGA] or 29 [VGA] elements, each element being 64 bytes long.
  625. Elements appear in the order:
  626.  00h-03h    Modes 00h-03h in 200-line CGA emulation mode
  627.  04h-0Eh    Modes 04h-0Eh
  628.  0Fh-10h    Modes 0Fh-10h when only 64kB RAM on adapter
  629.  11h-12h    Modes 0Fh-10h when >64kB RAM on adapter
  630.  13h-16h    Modes 00h-03h in 350-line mode
  631.  17h        VGA Modes 00h or 01h in 400-line mode
  632.  18h        VGA Modes 02h or 03h in 400-line mode
  633.  19h        VGA Mode  07h in 400-line mode
  634.  1Ah-1Ch    VGA Modes 11h-13h
  635.  
  636. Format of Video Parameter Table element [EGA, VGA only]:
  637. Offset    Size    Description
  638.  00h    BYTE    Columns on screen          (see 40h:4Ah)
  639.  01h    BYTE    Rows on screen minus one      (see 40h:84h)
  640.  02h    BYTE    Height of character in scan lines (see 40h:85h)
  641.  03h    WORD    Size of video buffer          (see 40h:4Ch)
  642.  05h  4 BYTEs    Values for Sequencer Registers 1-4
  643.  09h    BYTE    Value for Miscellaneous Output Register
  644.  0Ah 25 BYTEs    Values for CRTC Registers 00h-18h
  645.  23h 20 BYTEs    Values for Attribute Controller Registers 00h-13h
  646.  37h  9 BYTEs    Values for Graphics Controller Registers 00h-08h
  647.  
  648. Format of Video Parameter Table [MCGA only] {guesswork from inspection}:
  649.     - 16 triplet BYTEs of R,G,B DAC info for 16 colors;
  650.     - An array of 11 elements, each element being 32 bytes long.
  651.       Elements appear in the order:
  652.         Modes 00h,01h in 200-line mode for digital displays
  653.         Modes 00h,01h in 400-line mode for analog displays
  654.         Modes 02h,03h in 200-line mode for digital displays
  655.         Modes 02h,03h in 400-line mode for analog displays
  656.         Modes 04h,05h in 200-line mode for digital displays
  657.         Modes 04h,05h in 400-line mode for analog displays
  658.         Mode  06h in 200-line mode for digital displays
  659.         Mode  06h in 400-line mode for analog displays
  660.         Mode  11h
  661.         Mode  13h in 200-line mode for digital displays
  662.         Mode  13h in 400-line mode for analog displays
  663.  
  664. Format of Video Parameter Table element [MCGA only]:
  665. Offset    Size    Description
  666.  00h    BYTE    Columns on screen          (see 40h:4Ah)
  667.  01h    BYTE    Rows on screen minus one      (see 40h:84h)
  668.  02h    BYTE    Height of character in scan lines (see 40h:85h)
  669.  03h    WORD    Size of video buffer          (see 40h:4Ch)
  670.  05h    WORD    ??? always zero
  671.  07h 21 BYTEs    Video data registers 00h-14h to port 3D5h indexed by 3D4h
  672.  1Ch    BYTE    PEL Mask to port 3C6h
  673.  1Dh    BYTE    CGA Mode Control to port 3D8h
  674.  1Eh    BYTE    CGA Border Control to port 3D9h
  675.  1Fh    BYTE    Extended Mode Control to port 3DDh
  676.  
  677. Format of Video Parameter Dynamic Save Area [EGA, VGA only]:
  678. Offset    Size    Description
  679.  00h 16 BYTEs    Last data written to Attribute Contr. Palette Registers 0-15
  680.  10h    BYTE    Last data written to Attribute Controller Overscan Register
  681.  11h-FFh    Reserved
  682.         Note: Need for table was that EGA registers were write-only.
  683.         Note: If default values (from the Video Parameter Table) are
  684.               over-ridden at a mode set by the VGA User Palette Profile
  685.               Table, then the Dynamic Save Area is updated with the
  686.               default values, not the User Profile ones.
  687.  
  688. Format of Alphanumeric Character Set Override:
  689. Offset    Size    Description
  690.  00h    BYTE    Length in bytes of each character in font table
  691.  01h    BYTE    Character generator RAM bank to load, 0=normal
  692.  02h    WORD    Number of characters in font table, normally 256
  693.  04h    WORD    Code of first character in font table, normally 0
  694.  06h    DWORD    ptr to font table
  695.  0Ah    BYTE    Displayable rows (FFh=use maximum calculated value)
  696.  0Bh    BYTEs    Array of mode values to which this font is to pertain
  697.     BYTE    FFh end of array
  698.  
  699. Format of Second Alphanumeric Character Set Override:
  700. Authorities differ, some say same as first override above, but IBM say:
  701. Offset    Size    Description
  702.  00h    BYTE    Length in bytes of each character in font table
  703.  01h    BYTE    Character generator RAM bank to load, normally non-zero
  704.  02h    BYTE    reserved
  705.  03h    DWORD    ptr to font table
  706.  07h    BYTEs    Array of mode values to which this font is to pertain
  707.     BYTE    FFh end of array
  708.  
  709. Format of Graphics Character Set Override:
  710. Offset    Size    Description
  711.  00h    BYTE    Number of displayable character rows
  712.  01h    WORD    Length in bytes of each character in font table
  713.  03h    DWORD    ptr to font table
  714.  07h    BYTEs    Array of mode values to which this font is to pertain
  715.     BYTE    FFh end of array
  716.  
  717. Format of Display Combination Code Table [VGA only]:
  718. Offset    Size    Description
  719.  00h    BYTE    Number of entries in the DCC table at offset 04h
  720.  01h    BYTE    Version number
  721.  02h    BYTE    Maximum display type code that can appear in DCC table
  722.  03h    BYTE    reserved
  723.  04h 2N BYTEs    Each pair of bytes gives a valid display combination
  724.         Meaning of each byte:
  725.          00h     no display
  726.          01h     MDA with mono display
  727.          02h     CGA with color display
  728.          03h     reserved
  729.          04h     EGA with color display
  730.          05h     EGA with mono display
  731.          06h     Professional Graphics Controller
  732.          07h     VGA with mono display
  733.          08h     VGA with color display
  734.          09h     reserved
  735.          0Ah     MCGA with digital color display
  736.          0Bh     MCGA with analog mono display
  737.          0Ch     MCGA with analog color display
  738.          FFh     unrecognised video system
  739.  
  740. Format of User Palette Profile Table [VGA only]:
  741. Offset    Size    Description
  742.  00h    BYTE    Underlining: 01h=enable in all alphanumeric modes
  743.                  00h=enable in monochrome alphanumeric modes only
  744.                  FFh=disable in all alphanumeric modes
  745.  01h    BYTE    reserved
  746.  02h    WORD    reserved
  747.  04h    WORD    Number (0-17) of Attribute Controller registers in table
  748.  06h    WORD    Index (0-16) of first Attribute Controller register in table
  749.  08h    DWORD    ptr to table of Attribute Controller registers to override
  750.             Table is an array of BYTEs.
  751.  0Ch    WORD    Number (0-256) of video DAC Color registers in table
  752.  0Eh    WORD    Index (0-255) of first video DAC Color register in table
  753.  10h    DWORD    ptr to table of video DAC Color registers to override
  754.             Table is ??? triplets ??? of BYTEs???
  755.  14h    BYTEs    array of mode values to which this profile is to pertain
  756.     BYTE    FFh end of array
  757.  
  758. Format of System ROM:
  759.  Address     ByteSize    Description
  760.  F000h:6000h  32768    IBM PC ROM BASIC
  761.  F000h:E000h   8192    original IBM PC ROM BIOS
  762.  F000h:E739h    .    original IBM PC INT 14 handler
  763.  F000h:E82Eh    .    original IBM PC INT 16 handler
  764.  F000h:EC59h    .    original IBM PC INT 13 handler
  765.  F000h:EFD2h    .    original IBM PC INT 17 handler
  766.  F000h:F065h    .    original IBM PC INT 10 handler
  767.  F000h:F841h    .    original IBM PC INT 12 handler
  768.  F000h:F84Dh    .    original IBM PC INT 11 handler
  769.  F000h:F859h    .    original IBM PC INT 15 handler
  770.  F000h:FE6Eh    .    original IBM PC INT 1A handler
  771.  FFFFh:0000h      5    reset jump 
  772.  FFFFh:0005h      8    ASCII BIOS date
  773.  FFFFh:000Dh      1    ??? (generally unused or used to fix ROM checksum)
  774.  FFFFh:000Eh      1    machine type code (see INT 15h/AH=C0h)
  775.  FFFFh:0010h  65520    HMA (when A20 enabled)
  776.  
  777. -----------CONTRIBUTORS----------------------
  778. Wim Osterholt    <wim@djo.wtm.tudelft.nl> or Wim Osterholt 2:512/56
  779.     EHD floppy = 'KEGAN 4.0M Floppy Drive Controller.',
  780.              'ACME FX4-K7tb2 v:2.5 11/5/91'
  781. Stanley Appel   <appel@stack.urc.tue.nl>
  782.